const db = uniCloud.database();
const cmd = db.command;
//此回调函数主要实现支付回调校验，防止前端
module.exports = {
  async update() {
    let user_order_success = true;

    let {
      order_no,
      out_trade_no,
      total_fee
    } = {
      order_no: "1744629616620_303152",
      out_trade_no: "",
      total_fee: 1
    };

    //根据订单号获取订单信息
    let orderRes = await db.collection("ly-mall-order").where({
      order_no: order_no
    }).get();

    //根据订单拿到购买的商品列表
    let carList = orderRes.data[0].carsList;

    //获取订单中的商品id
    if (orderRes.data.length > 0) {
      let ids = carList.map(item => {
        return item.goodsid
      })
      //查询商品定义表获取商品信息
      let goodsRes = await db.collection("ly-mall-goods").where({
        _id: cmd.in(ids)
      }).get();

      let totalPrice = 0;
      // 遍历goodsRes.data中的每一个item
      goodsRes.data.forEach(item => {
        // 在carList中查找与item._id相等的商品
        let idx = carList.findIndex(item2 => {
          return item2.goodsid == item._id
        })
        // 将item的价格乘以carList中对应商品的numvalue，并累加到totalPrice中
        totalPrice += item.price * carList[idx].numvalue
      })

      if (totalPrice == total_fee) {
        // 根据订单号更新订单状态 1-完成
        db.collection("ly-mall-order").where({
          order_no: order_no
        }).update({
          status: 1
        })
      } else {
        // 根据订单号更新订单状态为 -2-异常
        db.collection("ly-mall-order").where({
          order_no: order_no
        }).update({
          status: -2
        })
        user_order_success = false;
      }
    }
    return user_order_success;
  }

}